#include <stdio.h>
#include <libxml/parser.h>  /*trabaja con los ficheros xml*/
#include <libxml/tree.h>    /*trabaja con el árbol generado de parsear el xml*/

#include "ParserXml.h"
#include "../Modelo/Circuito.h"
#include "../Modelo/ElementoCircuital.h"
#include "../Modelo/Compuerta.h"
#include "../Modelo/ElementoExterno.h"
#include "../Modelo/Cable.h"

class TestUnitarioXML{
public:
	int run()
	{
		std::cout<<">>>Levantando un circuito simple desde el XML<<<"<<std::endl;

		std::string * nombre = new std::string;
		Circuito * circuito;
		ParserXml xml;
		char* rutaArchivo = (char*)"./XML/bookmarks.xml";
		char* rutaArchivo2 =(char*) "./XML/pepe.xml";

		std::list<Compuerta*> * pListaCompuertas;
		std::list<Entrada*> * pListaEntradas;
		std::list<Salida*> * pListaSalidas;

		std::list<Cable*>* pListaCables;

	
		pListaCompuertas = new std::list<Compuerta*>;
		pListaEntradas = new std::list<Entrada*>;
		pListaSalidas = new std::list<Salida*>;

		pListaCables = new std::list<Cable*>;

		std::list<ElementoExterno*>* pListaExternos;
		pListaExternos = new std::list<ElementoExterno*>;

		xml.obtener_Desde_Archivo(rutaArchivo, pListaCompuertas,pListaEntradas,pListaSalidas, pListaCables
				, pListaExternos, nombre);
		

		
		int id = 10;
		xml.persistir_En_Archivo(rutaArchivo2, pListaCompuertas,pListaEntradas,pListaSalidas, pListaCables
				, pListaExternos, nombre,id );

		
		circuito = new Circuito (pListaEntradas, pListaSalidas, pListaCompuertas, pListaCables,pListaExternos, *nombre);

		circuito->simular();
	
		return 0;
	}
};
